package jmine.tec.script.persistent.services.incluir;

import static jmine.tec.services.api.ActionsEnum.INCLUIR;
import jmine.tec.script.persistent.domain.Script;
import jmine.tec.script.persistent.domain.ScriptPurpose;
import jmine.tec.services.annotations.Execution;
import jmine.tec.services.annotations.Input;
import jmine.tec.services.annotations.ServiceImplementor;

/**
 * Serviço que define que um script deve ser utilizado como initscript de um ScriptPurpose
 * 
 * @author lundberg
 */
@ServiceImplementor(action = INCLUIR)
public class InitScriptService {

    public static final String SCRIPT = "Script";

    public static final String FINALIDADE = "Finalidade";

    // Obrigatórios
    private Script script;

    private ScriptPurpose finalidade;

    /**
     * Inclui o script ao conjunto de scripts de inicialização da finalidade.
     */
    @Execution
    public void execute() {
        this.finalidade.addInitScript(this.script);
        this.finalidade.getPersister().save();
    }

    /**
     * @param script the script to set
     */
    @Input(fieldName = SCRIPT)
    public void setScript(Script script) {
        this.script = script;
    }

    /**
     * @param finalidade the finalidade to set
     */
    @Input(fieldName = FINALIDADE)
    public void setFinalidade(ScriptPurpose finalidade) {
        this.finalidade = finalidade;
    }
}
